package com.kevinkk.stackandqueue;

import java.util.Deque;
import java.util.ArrayDeque;

/**
 * 给你一个字符串数组 tokens ，表示一个根据 逆波兰表示法 表示的算术表达式。
 * 请你计算该表达式。返回一个表示表达式值的整数。
 */

public class EvaluateReversePolishNotation {
    class Solution {
        public int evalRPN(String[] tokens) {
            Deque<Integer> st = new ArrayDeque<>();
            for(String s : tokens){
                switch(s){
                    case "+":
                        int b1 = st.removeFirst();
                        int a1 = st.removeFirst();
                        st.addFirst(a1 + b1);
                        break;
                    case "-":
                        int b2 = st.removeFirst();
                        int a2 = st.removeFirst();
                        st.addFirst(a2 - b2);
                        break;
                    case "*":
                        int b3 = st.removeFirst();
                        int a3 = st.removeFirst();
                        st.addFirst(a3 * b3);
                        break;
                    case "/":
                        int b4 = st.removeFirst();
                        int a4 = st.removeFirst();
                        st.addFirst(a4 / b4);
                        break;
                    default:
                        // 将 字符串 转换➡️ 整型数字
                        st.addFirst(Integer.parseInt(s));
                }
            }

            return st.removeFirst();
        }
    }
}
